package com.azt.api.dto;

import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;
import java.util.List;

/**
 * 记录cell列的状态
 * @author 张栋  2016年5月20日上午11:28:11
 */
public class CellStat implements Serializable{

	/**
	 * 合并状态
	 * 	0              1               2              3
	 * 合并位置0开始，合并方向1row=row   2cell = cell ，合并值,合并框的大小
	 */
	private List<String[]> mergedstat;
	private Integer rownum;
	/**
	 * 是否有序号，序号的位置,从0开始
	 */
	private Integer hasindex=null;
	/**
	 * 每列的值
	 */
	private List<String> columns ;

	/**
	 * 去掉合并的值
	 */
	private List<String> nomergecolumns;
	
	private List<Integer> hasnum ;//为数字的列
	
	private List<Integer> containum;//包含数字的列
	
	private List<Integer> cellmap;
	
	/**
	 * 视觉上的，列数量
	 */
	private  int size;

	/**
	 * 列总数量，按excel标准算出的所有列的总和
	 */
	private int cellnum;

	public Integer getHasindex() {
		return hasindex;
	}

	public void setHasindex(Integer hasindex) {
		this.hasindex = hasindex;
	}

	public int getCellnum() {
		return cellnum;
	}

	public void setCellnum(int cellnum) {
		this.cellnum = cellnum;
	}

	public int getSize() {
		return size;
	}

	public List<Integer> getHasnum() {
		return hasnum;
	}

	public void setHasnum(List<Integer> hasnum) {
		this.hasnum = hasnum;
	}

	public List<Integer> getContainum() {
		return containum;
	}

	public void setContainum(List<Integer> containum) {
		this.containum = containum;
	}

	public int size(){
		return size;
	}
	
	/**
	 * 是否有合并
	 * @return
	 * @author 张栋  2016年5月20日上午11:46:22
	 */
	public boolean hasMerged(){
		return !mergedstat.isEmpty();
	}
	
	public void setSize(int size){
		this.size = size;
	}
	
	public List<String[]> getMergedstat() {
		return mergedstat;
	}

	public void setMergedstat(List<String[]> mergedstat) {
		this.mergedstat = mergedstat;
	}

	public List<String> getColumns() {
		return columns;
	}

	public void setColumns(List<String> columns) {
		this.columns = columns;
	}

	public void setCellSize(int cellnum) {
		this.cellnum = cellnum;
		
	}

	//去掉序号列,且去掉合并列,
	public List<String> getNomergecolumns() {
		return nomergecolumns;
	}


	public void setNomergecolumns(List<String> nomergecolumns) {
		this.nomergecolumns = nomergecolumns;
	}
	
	
	
	
	public List<Integer> getCellmap() {
		return cellmap;
	}

	public void setCellmap(List<Integer> cellmap) {
		this.cellmap = cellmap;
	}

	//第一个数字的位置
	public Integer getFirstNum(){
		if(hasnum!=null){
			return hasnum.get(0);
		}
		return -1;
	}
	
	//最后一个数字的位置
	public Integer getLastNum(){
		if(hasnum!=null){
			return hasnum.get(hasnum.size()-1);
		}
		return -1;
	}
	
	
	//不为空的列数
	public int getNoBankContentSize(){
		int size = 0;
		for(String c:nomergecolumns){
			if(StringUtils.isNotBlank(c)){
				size++;
			}
		}
		return size;
	}

	/**
	 * 去掉严格排除的列,去掉空列,剩余的大小
	 * Created by 张栋 on 2017/3/21 10:25
	 */
	public  int getNoBankExceptSize(List<Integer> allStat){
		int i=0;
		int size=0;
		for(String c:nomergecolumns){
			if(StringUtils.isNotBlank(c)){
				if(allStat!=null && i < allStat.size()){
					Integer integer = allStat.get(i);
					if(integer!=-1){
						size++;
					}
				}else{
					size++;
				}

			}
			i++;
		}
		return size;
	}


	//没有数字的列数
	public int getNoNumberSize(){
		return nomergecolumns.size()-hasnum.size();
	}
	
	//去掉空列与数字后的数量
	public int getNoBankAndNumber(){
		return getNoBankContentSize()-hasnum.size();
	}
	
	public String getCellMapString(){
		StringBuffer sb = new StringBuffer();
		for(Integer i : cellmap){
			sb.append(i);
		}
		return sb.toString();
	}

	public Integer getRownum() {
		return rownum;
	}

	public void setRownum(Integer rownum) {
		this.rownum = rownum;
	}
}
